package com.cool.shark.mapper;

import com.cool.shark.pojo.dto.GoodsStandardDto;
import com.cool.shark.pojo.entity.Goods;
import com.cool.shark.pojo.vo.*;

import java.util.List;

/**
 * @Name: GoodsMapper
 * @Author: 西风残叶
 * @Date: 2024/4/15 21:40
 * @Version: 1.0
 * @TODO: TODO
 */
public interface GoodsMapper {
    /**
     * 插入一个商品信息到数据库
     *
     * @param goods 商品对象，包含商品的全部信息
     * @return 返回插入操作影响的行数，通常为1表示插入成功，为0表示插入失败或未执行
     */
    int insert(Goods goods);

    /**
     * 根据提供的ID删除一条记录。
     *
     * @param spuId 要删除的记录的ID。这是一个可空参数，如果为null，则不执行删除操作。
     * @return 返回删除操作的影响行数。如果影响行数为1，则表示成功删除了一条记录；如果返回0，则表示没有删除任何记录；如果返回值小于0，则表示删除操作出现错误。
     */
    int delete(Long spuId);


    /**
     * 查询所有商品信息
     *
     * @return 返回一个包含所有商品信息的列表。如果查询结果为空，则返回空列表。
     */
    List<GoodsVo> list();

    /**
     * 根据商品id查询商品信息
     *
     * @param id 商品id
     * @return 返回一个包含指定商品信息的对象。如果查询结果为空，则返回null。
     */
    GoodsVo select(Long id);

    /**
     * 更新商品信息
     *
     * @param goods 商品对象，包含需要更新的商品信息
     * @return 更新成功返回1，失败返回0
     */
    int update(Goods goods);

    GoodsStandardVo getGoodsStandard(Long spuId);

    int updateStandard(GoodsStandardDto goodsStandardDto);

    GoodsDetailVo getGoodsDetail(Long id);

    List<GoodsNumVo> getGoodsNum();

    List<GoodsVo> search(String keyword);

    List<GoodsSalesVO> sales();

    List<GoodsResultVo> listByCarouselId(Long carouselId);
}
